//
//  ViewController.m
//  08-UITableView
//
//  Created by dllo on 16/7/25.
//  Copyright © 2016年 LST. All rights reserved.
//

#import "ViewController.h"
#import "UIView+Frame.h"

#define KTableViewReuse @"reuseIdentifier"
@interface ViewController () <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, assign) NSInteger numberCount;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.numberCount = 0;
    // Do any additional setup after loading the view, typically from a nib.
    self.view.backgroundColor = [UIColor whiteColor];
    self.navigationController.navigationBar.hidden = YES;
    // 创建
    self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStylePlain];
    // tableView默认创建alwaysBounceVertical为开启状态
    // _tableView.alwaysBounceVertical = NO;
    // tableView 属性
    // 行高 (默认44)
    //_tableView.rowHeight = 200;
    // 预估行高度
    //_tableView.estimatedRowHeight = 100;
    // 分割线颜色
    _tableView.separatorColor = [UIColor whiteColor];
    // 分割线样式, 设置隐藏分割线 默认 UITableViewCellSeparatorStyleSingleLine
    _tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    // 头视图
    // hearerView的xy 不影响其位置
    // 例:轮播图, 个人资料
    // UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(1000, 1000, self.view.bounds.size.width,  self.view.bounds.size.height)];
    // headerView.backgroundColor = [UIColor cyanColor];
    // 如果tabelHearderView要进行频繁修改, 必须开头加上beginUpdates 结尾endUpdates
    // [_tableView beginUpdates];
    // _tableView.tableHeaderView = headerView;
    // [_tableView endUpdates];
    // footerView x会对尾视图产生坐标影响 y不会
    // UIView *FooterView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.LST_width, 400)];
    //  [_tableView beginUpdates];
    // FooterView.backgroundColor = [UIColor blueColor];
    // _tableView.tableFooterView = FooterView;
    //  [_tableView endUpdates];
    // 数据展示
    // delegate 代理 帮助tableView执行一些事件
    // dataSource 数据源, 用来给tableView展示数据
        _tableView.delegate = self;
        _tableView.dataSource = self;
   
    // 通过这种方式, 隐藏多于tableView的空cell
    // 空cell一般出现在一个界面只展示几条数据时, 数据占不满整个屏幕
    _tableView.tableFooterView = [[UIView alloc] init];
    [self.view addSubview:_tableView];
}
// 返回数据源个数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 100;
}
// 返回数据源的样式
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // 从重用池中取出对应标识的cell
    // 直接创建
    // UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:KTableViewReuse];
    // cell 创建方式2
    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:KTableViewReuse];
    // 如果从重用池中取出的cell为空, 创建一个新cell
    if (cell == nil) {
        UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:KTableViewReuse];
       cell = [tableView dequeueReusableCellWithIdentifier:KTableViewReuse];
        _numberCount++;
        NSLog(@"创建新cell---%@--------%ld", cell, _numberCount);
    } else {
        NSLog(@"重用旧cell---%@", cell);
    }
    // 创建方式3 通过 registerClass 创建
    // 注意 cell 注册出来的类型style是defult (没有副标题)
     [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:KTableViewReuse];
    
#pragma mark - cell属性
    /* cell style
     * UITableViewCellStyleDefault 没有副标题
     * UITableViewCellStyleValue1 最左面主标题(黑), 最右面副标题(灰)
     * UITableViewCellStyleValue2 小字号, 蓝色主标题, 黑色副标题,主副标题紧挨
     * UITableViewCellStyleSubtitle 主副标题上下紧挨, 主标题字号大, 副标题字号小
     */
    // cell 主标题
    cell.textLabel.text = @"A";
    // cell 副标题
    cell.detailTextLabel.text = @"abcdefg";
    // cell 的图片
    cell.imageView.image = [UIImage imageNamed:@"4e4a20a4462309f7825abc48740e0cf3d7cad6b6.jpg"];
    return cell;
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
